package ui

import (
	"catlib/lib/ui/draw"
	"catlib/lib/ui/porterduff"
)

//@ Api 组件定义

// Object 组件接口
// 组件的定义接口
type Object interface {
	APIBase
	APIUpdate
	New(x, y, z, width, height int, Blend porterduff.ColorBlend) // 创建组件
	GetBase() ObjectBase                                         // 得到底层
	GetRectangle() draw.APIRectangle                             // 得到绘图矩阵
	DrawObject(v Object)                                         // 画组件
	SetHideDisplay(state bool)                                   // 设置隐藏
	CollisionSpot(x, y int) bool                                 // 检测点碰撞
	CollisionObject(v Object) bool                               // 检测组件碰撞
}

// ObjectBase 组件底层
// 用于绘图的组件的底层绘图缓冲区的定义接口
// 为更具通用性绘图与图层合并用此接口进行
type ObjectBase interface {
	APIBase
	GetColor() Color                   // 得到底层颜色
	DrawBase(x, y int, obj ObjectBase) // 画底组件
}
